﻿using System;
using System.Collections.Generic;
using System.Data;
using System.Data.SqlClient;
using ViewModel;
using Model;

namespace DataAccess
{
    public class DiasLaboradosDataAccess
    {
        public IList<DiasLaboradosViewModel> ObtenerDiasLaboradosPorMes(int idMes)
        {
            var diasLaborados = new List<DiasLaboradosViewModel>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure,
                    "ObtenerDiasLaboradosPorMes",
                    new[] { new SqlParameter("IdMes", idMes) }))
            {
                while (dataReader.Read())
                {
                    diasLaborados.Add(CrearEntidad(dataReader));
                }
                dataReader.Close();
            }
            return diasLaborados;
        }

        public void InsertarActualizarDiaLaborado(DiasLaborados diaLaborado)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarActualizarDiasLaborados", new[]
                {
                    new SqlParameter("IdColaborador", diaLaborado.IdColaborador),
                    new SqlParameter("IdMes", diaLaborado.IdMes),
                    new SqlParameter("Anio", diaLaborado.Anio),
                    new SqlParameter("CantidadDias", diaLaborado.CantidadDias),
                });
        }

        /*
        public void InsertarActualizarError(Error error)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "InsertarActualizarError",
                new[]
                {
                    new SqlParameter("IdError", error.IdError),
                    new SqlParameter("NombreError", error.NombreError),
                    new SqlParameter("Estado", (error.Estado ? "A" : "I"))
                });
        }

        public List<Error> ObtenerErrores()
        {
            var errores = new List<Error>();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerErrores"))
            {
                while (dataReader.Read())
                {
                    errores.Add(CrearEntidadError(dataReader));
                }
                dataReader.Close();
            }
            return errores;
        }*/

        private DiasLaboradosViewModel CrearEntidad(IDataReader dataReader)
        {
            return new DiasLaboradosViewModel()
            {
                IdColaborador = SqlHelper.GetInt(dataReader, 0),
                IdMes = SqlHelper.GetInt(dataReader, 1),
                Nombre = SqlHelper.GetString(dataReader, 2),
                CantidadDias = SqlHelper.GetInt(dataReader, 3),
                Anio = SqlHelper.GetInt(dataReader, 4)
            };
        }

        /*private Error CrearEntidadError(IDataReader dataReader)
        {
            return new Error
            {
                IdError = SqlHelper.GetInt(dataReader, 0),
                NombreError = SqlHelper.GetString(dataReader, 1),
                Estado = (SqlHelper.GetString(dataReader, 2) == "A")
            };
        }

        public void ActivarInactivarError(int idError)
        {
            SqlHelper.ExecuteNonQuery(CommandType.StoredProcedure, "ActivarInactivarError",
                new[] {
                    new SqlParameter("IdError", idError)
                });
        }

        public Error ObtenerErrorPorId(int idError)
        {
            var error = new Error();

            using (IDataReader dataReader = SqlHelper.ExecuteReader(CommandType.StoredProcedure, "ObtenerErrorPorId",
                        new[] { new SqlParameter("IdError", idError) }))
            {
                while (dataReader.Read())
                {
                    error = (CrearEntidadError(dataReader));
                }
                dataReader.Close();
            }
            return error;
        }*/


    }
}

